package com.txc.cloud.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.txc.cloud.admin.entity.PermissionEntity;
import com.txc.cloud.admin.model.dto.PermissionDto;
import com.txc.common.global.model.LoginUser;
import com.txc.common.global.model.SysPermission;
import com.txc.common.global.model.UserPermission;
import com.txc.common.utils.structure.tree.TreeNode;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 权限表 服务类
 * </p>
 *
 * @author TXC
 * @since 2022-08-02
 */
public interface IPermissionService extends IService<PermissionEntity> {
    /**
     * 获取权限树
     * @return 权限树
     */
    List<TreeNode<SysPermission>> getPermissionTree();

    /**
     * 获取用户权限集合
     * @param loginUser 用户信息
     * @return 权限树
     */
    Map<String, UserPermission> getUserPermissionMap(LoginUser loginUser);

    /**
     * 从文件中获取权限树
     */
    void initPermission();

    /**
     * 查询系统权限
     */
    List<String> getPermissionIds();

    /**
     * 批量创建权限
     * @param permissionDtoList 权限列表
     */
    void flushPermission(List<PermissionDto> permissionDtoList);

}
